The Subclass Contract
What virtual methods actually promise you
Inheritance gets a bad reputation. Much of that reputation is deserved. But there is one pattern where it genuinely shines: the template method.
What virtual methods actually promise you
Inheritance gets a bad reputation. Much of that reputation is deserved. But there is one pattern where it genuinely shines: the template method.
The hidden cost of naming something one thing in code and another in conversation
There’s a well-known quote about the two hard problems in computer science: cache invalidation and naming things. The naming problem is usually discussed in terms of choosing good names. But there’s a subtler version of the problem that causes more damage.
What Make teaches you about thinking in dependencies
Make is older than most programmers. It was written in 1976. It has quirks that would be considered bugs in any modern tool — tab sensitivity, implicit rules, recursive evaluation. And yet it persists.
Why writing logs matters even when nobody checks them
Every system I’ve worked on has logs. Most of them are unread until something breaks.
Why switching tasks is more expensive than it appears
Operating systems measure context switches in microseconds. Humans measure them in minutes. Both undercount the real cost.
Starting from what you know works and walking toward the failure
Most people debug forward. They start where they think the bug is and trace execution until something looks wrong. This works when your intuition is correct. When it isn’t, you end up wandering.
There’s a better approach.
Why pruning your task list matters more than growing it
Everyone loves adding to the backlog. Few people enjoy removing from it.
What pair programming taught me about the implicit agreements that make collaboration work
Pair programming has a reputation problem. People think it means two people at one keyboard, one typing while the other watches. The reality is more subtle and more useful than that.
The part nobody talks about is the contract.
Open-weight models are closer to proprietary ones than ever, and what that means for how we build
There’s a chart making the rounds right now showing coding benchmark scores for the latest open-weight models alongside the proprietary heavyweights. The gap between them is almost invisible.
Six months ago, if you wanted frontier-level code generation, you had one option: pay for API access to a proprietary model. Today, multiple open-weight models — some trained entirely on non-NVIDIA hardware — are posting competitive numbers on the same benchmarks.
This matters for builders, not just researchers.
A metadata struct masquerading as the real thing, and how a single type confusion crash reveals the importance of API boundaries