Axum + sqlx: The Rust Backend Setup I Actually Use in Production
I picked axum for a Rust service and spent a weekend on basics nobody documents. Here's the axum + sqlx production setup I actually ship,…
I picked axum for a Rust service and spent a weekend on basics nobody documents. Here's the axum + sqlx production setup I actually ship,…
Go generics turned four. Here's where I actually reach for type parameters in real Go code, the constraints I lean on, and the patterns I…
I migrated two Laravel apps to Octane with FrankenPHP and watched p99 latency halve. Here's what broke, what I left on FPM, and the real…
gRPC vs REST in 2026, decided by who calls your service and how often. Real Go and proto code, where each one wins, and the…
The Go error handling patterns I actually use in production: wrapping with %w, errors.Is and errors.As, sentinel errors, and errors.Join, with code.
PHP 8.4 property hooks and asymmetric visibility, with before-and-after code. The getter and setter boilerplate I deleted, and where these features bite back.
Gin, Echo, Fiber, Chi, or plain net/http? I've shipped Go services on all of them. Here's the honest read on which one I reach for…
Go 1.21's log/slog brought structured logging into the standard library. Here's what it replaced for me, where it shines, and the one part I still…
The API design defaults I argue for at project kickoff: noun-based URLs, honest HTTP status codes, RFC 9457 error shapes, real pagination, and versioning.
I've shipped production services in both Rust and Go. Here's the decision framework I actually use, with code, honest trade-offs, and no benchmark wars.