Capability-first SDK design, and where new work belongs

The question is almost never ‘how do we add this method to the SDK?’ — it’s ‘where should this capability live?’ A companion to the SDK fundamentals post, covering capability-first SDK design (with the caller-sketch discipline as the practice), the five-way routing framework for new capability requests (pure SDK / additive API change / new endpoint / new API service / push down for generation), signals for extending an existing API vs. creating a new one (with Stripe Terminal and AWS Lambda as named examples), and the version-coordination process when a capability requires changes on both sides.

August 7, 2026 · 17 min · Omar Crosby

What an SDK actually is, and when to build one

An SDK is not just a client library — it’s the smallest thing a platform can ship that turns ‘read our docs and call our API’ into ‘install this and get to work.’ First in a four-post series on SDK design: this one covers the fundamentals — what SDKs are, where they came from, how they differ from libraries and frameworks and protocols, why they’re becoming the product itself, and a concrete decision framework for when to build one. Companion posts cover the anatomy of an SDK’s surface in Go, the rubric for what makes one good with named exemplars, and the design-process question of routing new capabilities between the SDK and the API.

August 7, 2026 · 16 min · Omar Crosby

Design patterns as vocabulary

Not a catalog of the Gang of Four patterns — an argument for why they’re foundational. Design patterns are a shared vocabulary that lets you read a codebase’s architectural intent from the names alone, and the value of that shared language transcends any specific programming language.

July 20, 2026 · 14 min · Omar Crosby

Hexagonal architecture, in plain language

A jargon-free introduction to hexagonal architecture — the idea that your business logic should sit in the middle and the outside world (databases, screens, APIs, tests) should plug into it through simple, agreed-upon shapes. Small worked examples in Python, Go, and Rust show what changes when a new requirement arrives.

July 20, 2026 · 16 min · Omar Crosby

Web feeds: RSS, Atom, JSON Feed, and OPML

A working tour of the web-feed ecosystem — the RSS 2.0 lineage, IETF Atom (RFC 4287), JSON Feed 1.1, and OPML for exchanging subscription lists between readers — with practical guidance on which format to publish and current recommendations for desktop, mobile, and self-hosted readers.

July 20, 2026 · 14 min · Omar Crosby