Blog

Thoughts on programming, technology, and lessons learned along the way.

Five tabs at a time: a load testing story

A debugging story about load testing AI agents on Browserbase, and what happens when many isolated BrowserContexts share a single browser process.

testing browsers playwright ai-agents

Mapping DB Rows to Tagged Unions with Effect Schema

Database schemas rarely match your domain types. Here's how to safely map a wide table with nullable columns to a discriminated union — with exhaustiveness enforced by the type system.

typescript effect-ts database type-safety

Sometimes All You Need Is a Return Type Annotation

How TypeScript's type inference can fail in deeply nested contexts, causing union types to widen unexpectedly, and why explicit return type annotations are critical.

typescript effect-ts systems

Job offer was a scam

How I got a very good job offer that in reality was a scam

story IT scam