Blog

All posts

Notes on backend architecture, identity, and the tools that hold a system together.

Software Principles

You Are Hired to Build Software, Not to Become a Merchant of Dependencies

Adding a package doesn't just add functionality — it adds another maintainer, another release cycle, another transitive tree nobody fully mapped. left-pad and xz-utils are what that cost looks like when it finally comes due.

Aug 14, 2026·8 min read
Security

Too Many Security Options Can Become a Security Problem

A standard offering unlimited choices without strong defaults can build weaker systems than one offering fewer, better-recommended ones. Why FAPI narrowed OAuth's options instead of adding more, and what the paradox of choice has to do with it.

Aug 13, 2026·7 min read
OAuth2 / OpenID Connect

Why FAPI Moved From "Authenticate the Client" to "Bind the Transaction to the Client"

Knowing who's calling an API used to be enough. Private Key JWT, mTLS, DPoP, Rich Authorization Requests, and CIBA are the mechanisms that let FAPI bind a specific transaction to a specific client and user, not just a session.

Aug 12, 2026·6 min read
OAuth2 / OpenID Connect

Your Secure APIs May Need More Than Bearer Tokens

If possession of a stolen token is enough to access your API, the token has become the password. DPoP, mTLS, and why proof-of-possession asks a fundamentally different question than a bearer token ever could.

Aug 11, 2026·8 min read
Security

FIPS Compliance: It's More Than Running Your Application on Kubernetes

FIPS doesn't certify applications, orchestrators, or clouds — it certifies specific, versioned cryptographic modules. "We deployed to Kubernetes" was never an answer to the question FIPS is actually asking.

Aug 10, 2026·6 min read
OAuth2 / OpenID Connect

Why FAPI Recommends Private Key JWT: Your Public Key Is Meant to Be Public

A public key is an identity. A private key is the proof. The math behind why an attacker who steals your public key still can't forge a signature — RSA factoring, ECDLP, and what FAPI actually gets from Private Key JWT.

Aug 9, 2026·9 min read
Software Architecture

Stop Turning Deployments Into Board Meetings

A deployment call with a dozen stakeholders watching one engineer click deploy isn't engineering maturity. It's engineering anxiety, dressed up as process — and it's usually compensating for a rollback plan nobody trusts.

Aug 8, 2026·7 min read
Field Notes

If All You Care About Is Payday, Stop Pretending You Care About Engineering

A salary rewards your employment. It doesn't validate your judgment. Coasting through the month without questioning anything is a choice you're entitled to make — just don't call it engineering.

Aug 7, 2026·6 min read
Field Notes

Why Writing Engineering Blogs Is Hard

Everything here is a report from where I'm standing, not an argument built to relocate you there. If you land somewhere different after actually thinking it through, that's not a miss — that's the point.

Aug 6, 2026·8 min read
Software Principles

Experience Is Earned, Not Downloaded

Credentials, tutorials, and AI compress the time it takes to encounter an idea. None of them shorten the years it takes to develop judgment about which ideas actually hold up once reality gets involved.

Aug 5, 2026·8 min read
Software Principles

There Is No SI Unit for Software Engineering

No formula outputs the correct architecture, and no checklist guarantees good software. What exists instead is a long list of trade-offs made under constraints nobody judging the decision later can fully see.

Aug 4, 2026·7 min read
Field Notes

Hard Skills Get You in the Room. Ownership Is What Keeps You There.

Technical depth gets an engineer into the room. What determines whether they thrive over years is how well they collaborate, absorb feedback, and own outcomes nobody assigned them.

Aug 3, 2026·7 min read
Security

Multiple Wrongs Do Not Make a Right: Challenging Industry Patterns in Banking Software

"Other banks do it this way" answers is this common, not is this the right control. Two onboarding requirements worth interrogating on their own merits, not on precedent.

Aug 3, 2026·9 min read
Software Principles

AI Knows Your Language. It Doesn't Know Your Business.

Used well, AI makes engineers faster. Used carelessly, it quietly replaces engineering judgment with statistical pattern matching — and organizations are starting to let that happen without noticing.

Aug 3, 2026·8 min read
Security

A Secure Implementation Cannot Save an Insecure Product Decision

A team can build a specification flawlessly and still ship something insecure, if the specification itself was built on a security assumption that stopped being true years ago.

Aug 2, 2026·7 min read
Security

Security Through Obscurity: The Oldest Bad Idea That Refuses to Die

From Kerckhoffs' 1883 principle to obscured APIs and JWTs done wrong — where security-through-obscurity comes from, why it fails, and the narrow cases where it still earns a place.

Aug 1, 2026·15 min read
Security

Password Security Was Never About Complexity — It's About Exposure

Complexity rules check whether a password looks hard to guess. Attackers running credential stuffing don't care how a password is shaped — only whether it's already sitting in a breach dataset.

Jul 29, 2026·7 min read
Security

RSA Isn't Banned by FIPS or FAPI — But the Way Most People Use It Basically Is

RSA was never dropped from FIPS or FAPI. What changed is which padding scheme is allowed, and the gap between RS256 and PS256 is exactly where the myth comes from.

Jul 25, 2026·6 min read
OAuth2 / OpenID Connect

CIBA and the Case for Matching Auth Flows to Threat Models, Not Popularity

Authorization Code Flow with PKCE is the default for native apps for good reason — but a bank's own first-party app has a different relationship with its identity provider, and CIBA was built for exactly that shape of problem.

Jul 22, 2026·6 min read
Software Architecture

Clean Architecture or Not? Why the Real Question Is Autonomy and Pragmatism

Popularized by Robert C. Martin, Clean Architecture divides opinion for good reason. On the Big Ball of Mud, Vertical Slice Architecture, and why the real question is autonomy paired with pragmatism.

Jul 20, 2026·14 min read
Software Principles

There's No Glory or Gain in Multiple Duplicated Implementations

Copy-pasting code quietly converts a one-time saving into a compounding cost. On DRY, Sandi Metz's "Wrong Abstraction," and when duplication is actually fine.

Jul 10, 2026·8 min read