Articles
Thoughts on engineering, building products, and making things.
The System Prompt: Teaching Claude How to Behave, Not What to Say
A small experiment — a Claude-powered math tutor for kindergartners — shows why the system prompt is the most underrated parameter in the Claude API.
Sep 8, 2026 • 4 min readWhy Claude Doesn't Remember What You Said Two Messages Ago
The Claude API is stateless — there's no hidden memory between calls. Here's how multi-turn conversations actually work under the hood, and why that matters for cost and context.
Sep 7, 2026 • 4 min readBuilding a Concurrency-Limited Worker Pool with Promises
How to write a small, dependency-free utility that runs async tasks with a maximum concurrency limit, using nothing but native Promises.
Mar 19, 2026 • 7 min readTypeScript: Type Aliases vs Interfaces
A practical breakdown of when to reach for a type alias and when to reach for an interface, and why the difference matters less than the ecosystem convention around it.
Mar 11, 2026 • 6 min readBuilding scalable APIs with Python and functional patterns
Lessons learned from building high-throughput APIs at scale using Python, functional programming patterns, and modern async frameworks.
Feb 14, 2026 • 8 min readInfrastructure as code: lessons from production deployments
Hard-won lessons from managing cloud infrastructure with Terraform across multiple environments and teams.
Jan 27, 2026 • 12 min readDesigning custom enclosures: from Fusion 360 to finished product
A practical guide to designing 3D-printed enclosures for electronics projects, from CAD to post-processing.
Jan 9, 2026 • 6 min readUnderstanding TypeScript Utility Types: Partial and Beyond
A practical guide to TypeScript's built-in utility types like Partial, showing how they simplify your code and improve type safety.
Mar 3, 2025 • 5 min read