Type safety stops your program from treating a string like an integer. Type convenience means you don’t have to write a novel to declare that string in the first place. The two get tangled up constantly in platform engineering discussions, and that confusion has real consequences—brittle automation, leaky abstractions, and a misplaced confidence that the …
Most developers I know treat “type safety” and “type convenience” as if they’re the same thing. They’re not. One is a guarantee about how your code behaves at runtime; the other is a feeling you get while writing it. Conflating the two is how teams end up with a false sense of security—and eventually, a …
Every few months a new code generation tool shows up, demos well, then turns into a liability the second it hits a real codebase. I have stopped blaming output quality. The problem is structural, and it is not subtle: generation without reviewable intermediate artifacts is untrustworthy by design. This is not a new insight. Build …
I’ve spent the better part of a decade writing code in languages that slap my hand every time I try to do something clever with a variable. Rust, TypeScript in strict mode, a bit of Haskell when I’m feeling masochistic. And I’ve also spent plenty of time in Python and JavaScript, where the interpreter basically …
I’ve sat through too many code reviews where someone rejects a perfectly readable function because it doesn’t use a generic type parameter. Or the flip side: a developer wraps a simple string in a branded type, layers on three utility types, and pats themselves on the back for “type safety.” That’s not safety. That’s just …
I’ve lost count of the code reviews where someone slaps a generic wrapper, sprinkles a few any types, or leans on a clever assertion, and the immediate reaction is: “That’s not type safe.” But when I push back and ask what the actual, concrete risk is, the answer often gets fuzzy. The real fight isn’t …