// Blog

Writings & Notes

Articles on engineering, systems design, startups, and lessons from the trenches.

</>
Systems Design·

Microservices Are Not an Architecture. They Are a Consequence.

Nobody chooses microservices because they are a good starting point. On service decomposition done right.

</>
Cloud Engineering·

S3 Is Infinitely Scalable. Your Code Is Not.

Amazon S3 can handle anything you throw at it. The code that talks to S3 often cannot.

</>
Backend Engineering·

Python asyncio Is Not as Hard as People Make It Sound

The mental model that makes async Python straightforward.

</>
AI & Machine Learning·

What LLMs Are Actually Good At (And What They Are Not)

I built a production LLM agent cutting response time from 8 minutes to 30 seconds. An honest assessment of where LLMs win and fail.

</>
Database Engineering·

The Database Is the Last Line of Defence

Application-layer validation can have bugs. The database constraint cannot.

</>
Career & Inspiration·

The Most Important Engineering Skill Is Not Technical

After 12 years, the skill that has determined outcomes more than any technical competency is clear cross-disciplinary communication.

</>
Systems Design·

Event-Driven Architecture: When to Use It and When to Avoid It

Event-driven architecture solves real problems. It also introduces real complexity.

</>
Backend Engineering·

Redis Is Not a Database. But Treat It Like One.

Redis is a cache first. The systems that treat it carelessly are the ones that lose data at the worst moment.

</>
Backend Engineering·

Rate Limiting Is an Act of Respect

Rate limiting protects your system from abuse and your legitimate users from the consequences of others' abuse.