Edgewise: A Tutor That Asks Before It Teaches
Edgewise asks you questions first, finds the one idea blocking the rest, then teaches you from there. How it works, and what I gave up to keep it free.
Read More
I write about web development, design, and other tech-related topics. Here are some of my latest articles.
Edgewise asks you questions first, finds the one idea blocking the rest, then teaches you from there. How it works, and what I gave up to keep it free.
Read More

A model can write forty lines of async JavaScript that look perfect and run in the wrong order. The event loop is the thing that tells you which. One thread, two queues, and a button that freezes the page you are reading.

The principles we use to build reliable software systems map surprisingly well onto how societies function and fail. Design for failure not virtue, keep coupling loose, make guardrails adjustable, and invest in observability above almost everything else.

Not all code deserves a unit test. Writing tests just to reach an arbitrary coverage percentage is a waste of time. This article questions the obsession with coverage metrics and argues for meaningful, targeted testing instead.

The package.json file defines the project's dependencies, scripts, versioning, and even how it should be executed, among other things.

Quality attributes are the cornerstone of software architecture. They define the characteristics that determine the overall quality of a system. In this article, we'll explore the key quality attributes that every software architect should consider when designing a system.

Web accessibility ensures that people with disabilities can perceive, understand, navigate, and interact with websites and tools. It's not just the right thing to do; in many cases, it's the law.