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

Semantic Versioning, Semantic Release, and a Go-native implementation

How Semantic Versioning and Semantic Release fit together — the standard, the automation contract that turns commit history into version tags, and why I re-implemented the Node.js tool in Go to remove the JavaScript toolchain from CI pipelines that don’t otherwise need one.

July 20, 2026 · 12 min · Omar Crosby

Regular expressions across Unix, Python, Go, and Rust

A tour of regular expressions shallow enough to onboard a beginner and deep enough to refresh an expert — literals, quantifiers, groups, lookaround, and the engine differences between PCRE-family backtrackers and RE2-family linear-time engines that power grep, Python, Go, and Rust.

July 20, 2026 · 21 min · Omar Crosby

Distributing CLI tools with a personal Homebrew tap

How to publish Python, Go, and Rust command-line tools through your own Homebrew tap — including a personal GitHub account, GoReleaser and cargo-dist for platform builds, and go-semantic-release for automatic version bumps that flow all the way through to brew upgrade.

July 20, 2026 · 14 min · Omar Crosby

Go concurrency, explained slowly

If you have read three articles on Go concurrency and closed each one more confused than when you started, this post is for you. Most writing on the subject moves too fast — it uses the word “channel” as if you already know what one is, drops phrases like “fan-out fan-in” as if they refer to well-known landmarks, and expects you to bring your own mental model of how goroutines relate to threads. This post makes the opposite bet. It starts from zero, defines each term the moment it appears, keeps the code samples small enough to hold in your head, and — this part matters — puts the primitives (the building blocks) and the best practices (the rules of thumb) in separate sections so you never have to guess which one you are looking at. ...

July 18, 2026 · 25 min · Omar Crosby