Writing by Yaodong Zhao

The Bottleneck Is the Process

AI made every step in the software pipeline faster, but the pipeline itself didn't speed up. The process between steps carries real weight and doesn't just go away when AI arrives. Instead it moves inward to individuals, and across to whoever picks up the new capability.

Push It Until It Breaks

I find the boundaries of AI tools by deliberately overusing them, pushing past what I think they can handle, watching where they fail, and recalibrating. Models and tools keep changing, so the cycle starts over often. This post is about running that cycle on production systems.

If They're Right: Preparing for the AI Economic Shock

Suppose AI works exactly as promised, and that is what breaks the economy. This scenario analysis explores how AI-driven productivity could hollow out the consumer economy, trigger a credit crisis, and reshape who benefits from growth.

The Multi-Agent Setup I Actually Use

One agent stretched across everything kept bleeding context between tasks. So I split it into three, an orchestrator, a coder, and a thinker, each in its own container, coordinated through Discord. Parallel work became possible for the first time.

What I Learned Building AI Agents in 2025

I spent the year copying elegant agent architectures and watching them fail. The same lesson kept coming back, that agent architecture gets forced into existence by the problems you hit rather than designed in advance. This post retraces how I got from there to a setup that works.

What Context Windows Can't Solve

A patient named Elliot lost the ability to make decisions after brain surgery, even though every cognitive test came back normal. Without emotions to help filter, all options looked equally important to him. Damasio's account changed how I think about the role constraints play in AI decision-making.

Building Reliable LLM Streaming in Rails

My first attempt used Turbo Streams for LLM responses, and timing issues followed. Chunks went missing during page navigation, and connection hiccups left responses truncated. The problem traced back to ActionCable's fire-and-forget model, so I rebuilt the streaming on a different architecture.

The Disappearance of Tools

A dialogue between a human and an AI, sparked by an interview in which Claude Code's creators describe deleting features and aiming for a tool that disappears. The conversation works through what that philosophy means for the boundary between user and tool.

Understanding Bridge Component Messaging in Hotwire Native

Bridge components in Hotwire Native offer no direct access to navigation, which felt inconvenient when I first built one. It turned out to be intentional. Restricting native-side navigation is how Hotwire Native keeps web and native synchronized through URLs.

all posts →