惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
B
Blog
博客园_首页
C
Check Point Blog
Microsoft Security Blog
Microsoft Security Blog
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
B
Blog RSS Feed
M
MIT News - Artificial intelligence
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
量子位
V
V2EX
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog
Martin Fowler
Martin Fowler
Recent Announcements
Recent Announcements
I
InfoQ
博客园 - 【当耐特】

Software Design: Tidy First?

Reject Change, Sometimes Baking a Model Busy is Short Volatility Speculative Short Volatility & Neglectful Short Volatility Canon 3X: Explore/Expand/Extract How Do You Know That? Long Vol: What is Volatility? Long Volatility Development The Beginnings of an Idea: XP is Long Volatility When Complaints Are Good News Air Traffic Control The Cost YAGNI Was Never About Why So Literal? Smalltalk Genie Hey, N00b, We Didn't Hire You to Complete Tasks A Learning System Made of Learning Parts You Don't Get to Create Anything Trust Factory Scope Is The Steering Wheel Itchy Brain Thinkies World Congress II: May 20, 2026 Thinkie: Wider Scope Thoughts, Not Thinking? Did We Do This to Ourselves? Adaptive Radix Tree Genie Sessions: Run, Right, and Fast for the Adaptive Radix Tree Unstick Your Stuck Thinking Genie Tarpit Genie Lessons: Nobody Wants Agents Passing Tests Bore Me
Genie Lessons from Genie Sessions: Prose as a Programming...
Kent Beck · 2026-05-26 · via Software Design: Tidy First?

This session is sponsored by OpenProse. More on them below — they're also the reason we're here.

Dan Barrett built OpenProse — a framework that lets you write programs in structured English and run them with an AI agent like Claude Code. The description sounds either obvious or impossible depending on your priors. When I told him it sounded impossible, he said: “People were shocked that it works.”

So we installed it and built something live.

The project: a service that would show me tides, weather, sunrise, moonrise — everything I want to know before a walk along the coast. One command. A few minutes. It came back with an hourly tide chart for Montara (I picked a town I don’t actually live in), fog conditions, waxing crescent moon, the works.

Here’s what interested me about the architecture underneath.

Each OpenProse component has a requires block and an ensures block. Requires is what the component expects from its caller. Ensures is what it promises to produce. I said that looks like a function — domain and range. Dan said think more like a service. The distinction matters: when you have many components, an inversion-of-control container wires them together by matching ensures blocks to requires blocks. The same way Spring would wire Java components — except the whole thing is written in structured English and run by an LLM.

The Dijkstra objection comes up immediately: natural language is too ambiguous to be a programming language. Dan’s answer: we don’t know what’s possible until we walk the landscape. Plenty of people would have said nothing is possible with prose. That’s clearly not true. The question is just where the edges are — and you can only find those by trying.

The ensures block is effectively a postcondition. It’s what every sibling component can rely on. When I asked about extract method — you write one of these things, it grows, eventually you pull a piece out and name it — Dan said yes, all the time. Usually just by asking Claude to do exactly that.

The other clever piece: sub-agents pass pointers instead of data. Variable bindings are files. The pointers are file paths. When a sub-agent produces a giant context block — a full PDF analysis, a research output, a tide chart — it writes it to disk and hands back the path. The main thread stays clean. Context management, done at the file system level.

I’m building a Smalltalk VM from scratch right now — yes, literally writing a VM — and watching this I thought about how different it is to build a virtual machine when your primitives are LLM calls instead of machine instructions. My VM is 1000x faster. But the primitives here are so much larger that on the right problems, it’s a wash.

What’s next for OpenProse is interesting. Dan’s thesis is that the whole industry is moving toward declaring outcomes and letting agents figure out the path. Codex has a /goal feature. Anthropic just shipped something called Outcomes in their API. The pattern is: specify what you want to be true, not how to make it true. OpenProse is an early articulation of that idea at the framework level.

One of my many projects from the last 40 years is now actually possible. The genie just got smarter.

Dan is at @IRL_DanB on Twitter and dan@openprose.ai. OpenProse is open source — search it on GitHub and follow along. He loves feedback and means it.

Available for iOS and Android