ETL in plain language

A jargon-free introduction to ETL — what Extract, Transform, and Load actually mean; the vocabulary defined without hand-waving; concrete examples; and how to decide when an organization actually needs one.

August 14, 2026 · 22 min · Omar Crosby

Data modeling in plain language

A jargon-free introduction to data models and data modeling — what a data model actually is, how they’re typically represented (ER diagrams, relational schemas, JSON structures, dimensional models), and why deciding the shape of your data before writing the code that manipulates it is usually the cheapest work you’ll do all quarter.

August 11, 2026 · 19 min · Omar Crosby

The anatomy of an SDK, in Go

A walkthrough of the surface an SDK exposes, in seven parts, with idiomatic Go for every piece: the client constructor with functional options, resource groupings that mirror the caller’s mental model, typed requests and responses, typed errors with request IDs and errors.As, first-class pagination via iter.Seq2, streaming and retries and instrumentation, and the docs/samples/changelog trio that finishes the surface. Companion to the SDK fundamentals post.

August 7, 2026 · 8 min · Omar Crosby

What makes a good SDK

An eight-point rubric for judging whether an SDK is any good, each criterion paired with a real currently-shipping SDK that gets it right — Stripe (idiomatic hand-crafted per language, typed errors with request IDs, exceptional docs), AWS SDK for Go v2 (boring auth via the credential-provider chain, paginators as a distinct type), Anthropic and OpenAI (sensible retry defaults, streaming), Stainless-generated SDKs (types from a single spec), GitHub Octokit (honest versioning). Followed by the two-sided value proposition — what building on those axes actually buys for the vendor and the caller.

August 7, 2026 · 15 min · Omar Crosby

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