Removing Bottlenecks: Uploading Large Files
Why streaming an 8 GB file through your app server is the wrong shape, and how presigned URLs and multipart uploads let the client send straight to the bucket.

Practical explorations of backend systems, Go, and DevOps. The decisions, tradeoffs, and details behind working software.
Why streaming an 8 GB file through your app server is the wrong shape, and how presigned URLs and multipart uploads let the client send straight to the bucket.

Why your /register endpoint shouldn't wait for an SMTP server, and how durable job queues let the request return in 50 ms while the slow work happens elsewhere — safely.

Your Kafka producer is at 100k msg/s. Your consumer fleet is at 12k. Adding more consumers does nothing — and your dashboard is trying to tell you why.

The single most common bottleneck in backend code, and three ways to remove it.

A walk through the G-M-P scheduler, escape analysis, false sharing, and the GC — from the CPU up. With interactive demos and benchmarks you can run yourself.

How we built a scalable image detection system using perceptual hashing to catch policy-violating products—processing millions daily and catching manipulated images that traditional hashing misses.

Build a concurrent wallet app in Go using Redis-inspired serial execution. Learn how a single-threaded event loop prevents lost updates and write skew while maintaining high throughput.

Secure your private images with signed URLs in Go. Learn how to generate time-limited, cryptographically signed access links that expire automatically—preventing unauthorized hotlinking and access.

A personal reflection on why testing isn't just another task to complete. Discover how thinking about your users transforms testing from a chore into a genuinely fulfilling part of development.

Learn how Go generics eliminate repetitive helper functions. Create one reusable function that converts any value to a pointer—from strings to custom structs—replacing dozens of type-specific implementations.
