Latest

08
Mar

Why performance isn't always the north star

I spend a lot of time thinking about performance. I use Cap'n Proto over Protobuf because parsing overhead
2 min read
20
Jan

What it actually means to be a senior engineer

Nobody told me what the job actually was when I became a senior engineer. I assumed it was mostly about
2 min read
10
Nov

Go generics in practice: what they're actually good for

Go generics landed in 1.18 and the community spent about six months either overclaiming or dismissing them. The reality
2 min read
15
Sep

Cap'n Proto vs Protobuf: why we switched

We'd been using Protobuf for years. It worked. Nobody complained. Then we started hitting the edges: schema migrations
3 min read
29
Jul
Apache Kafka: How It Actually Works

Apache Kafka: How It Actually Works

Most people encounter Kafka through job postings or architecture diagrams where it sits between everything. Someone always calls it a
3 min read
17
Apr
Ring Buffers vs. Double-Ended Linked Lists

Ring Buffers vs. Double-Ended Linked Lists

Not every data structure decision needs a framework. Sometimes it's just: do I need a fixed-size, cache-friendly loop,
2 min read
14
Apr

Saga pattern

Saga Pattern When dealing with distributed transactions, consistency is key. In the world of microservices, the Saga pattern emerges as
1 min read
13
Apr

WebSocket in Go

WebSocket Magic in Go For those seeking to harness the power of WebSockets in Go, the "github.com/gorilla/
2 min read
13
Apr

WebSockets

When we first needed real-time updates in our app, we did what most teams do — we polled. Every two seconds,
2 min read
26
Feb
Story of our Kafka message loss

Story of our Kafka message loss

Background About a month after we went live with our first Kafka-heavy design in Shopee, we were notified of missing
2 min read